package tacos.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
import tacos.Ingredient;
import tacos.data.IngredientRepository;

import java.util.HashMap;
import java.util.Map;

// 转换器是实现了Spring的Converter接口并实现了convert()方法的类，该方法会接收一个值并将其转换成另外一个值。将String转换为Ingredient
// 注意，IngredientByIdConverter使用了@Component注解，使其能够被Spring识别为bean。Spring Boot的自动配置功能会发现它和其他Converter bean。
// 它们会被自动注册到Spring MVC中，在请求参数与绑定属性需要转换时会用到。
@Component
public class IngredientByIdConverter implements Converter<String, Ingredient> {

    private IngredientRepository ingredientRepo;

    @Autowired
    public IngredientByIdConverter(IngredientRepository ingredientRepo) {
        this.ingredientRepo = ingredientRepo;
    }

    @Override
    public Ingredient convert(String id) {
        return this.ingredientRepo.findById(id).orElse(null);
    }
}
